package com.lonty.intelligence.mapper;

import com.lonty.intelligence.model.UserInfo;
import com.lonty.intelligence.request.CommitteeIdAndNameList;
import com.lonty.intelligence.request.UserInfoAndCommunityList;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author 陈璇
 * @Date 2020/4/16 10:37
 * @Version 1.0
 **/
@Mapper
public interface UserInfoMapper {

    /**
     * 保存用户信息
     * @param userInfo
     * @return
     */
    int saveUserInfo(UserInfo userInfo);

    /**
     * 根据Id获取用户信息
     * @param id
     * @return
     */
    UserInfoAndCommunityList getById(String id);

    /**
     * 根据openId获取用户信息
     * @param openId
     * @return
     */
    UserInfoAndCommunityList getByOpenId(String openId);

    /**
     * 根据手机号获取用户信息
     * @param telephone
     * @return
     */
    UserInfoAndCommunityList getByTelephone(String telephone);

    /**
     * 根据手机号获取用户信息
     * @param telephone
     * @return
     */
    UserInfo findByTelephone(String telephone);

    /**
     * 根据ID修改手机号
     * @param id
     * @param telephone
     * @return
     */
    int modifyTelephone(@Param("id") String id,@Param("telephone") String telephone);

    /**
     * 根据ID修改手机号、身份、社区、真实姓名
     * @param id
     * @param telephone
     * @return
     */
    int authenticationInformation(@Param("id") String id,@Param("telephone") String telephone,
                                  @Param("communityId") String communityId, @Param("realName") String realName);

    /**
     * 删除用户信息
     * @param id
     * @return
     */
    int deleteUserInfo(String id);

    /**
     * 保存居委成员
     * @param name
     * @param telephone
     * @return
     */
    int saveCommittee(@Param("id") String id,@Param("name") String name,@Param("telephone") String telephone,
                      @Param("communityId") String communityId);

    /**
     * 根据社区ID获取居委ID、名称
     * @param communityId
     * @return
     */
    List<CommitteeIdAndNameList> getCommitteeIdAndName(String communityId);

    /**
     * 根据ID修改手机号和真实姓名
     * @param id
     * @param telephone
     * @param realName
     * @return
     */
    int updateTelephoneAndRealNameAndType(@Param("id") String id, @Param("telephone") String telephone,
                                   @Param("realName") String realName, @Param("type") Integer type);

    /**
     * 修改用户信息
     * @param userInfo
     * @return
     */
    int modifyUserInfo(UserInfoAndCommunityList userInfo);

    /**
     * 获取所有用户ID
     * @return
     */
    String getAllUserId();

}
